SPB Git
1.1 KB · 19 lines tsx
1import { notFound } from "next/navigation";2import { SiteHeader } from "@/components/site-header";3import { SiteFooter } from "@/components/site-footer";4import { siteSetting } from "@/lib/papers/queries";5import { t, type Locale } from "@/lib/i18n";6export function generateStaticParams() { return [{ locale: "en" }, { locale: "fr" }]; }7export default async function PublicLayout({ children, params }: { children: React.ReactNode; params: Promise<{ locale: string }> }) {8  const { locale: raw } = await params; if (raw !== "en" && raw !== "fr") notFound(); const locale = raw as Locale; const d = t(locale);9  const [attribution, institution] = await Promise.all([siteSetting<{ en: string; fr: string }>("site.attribution"), siteSetting<{ name_en: string; name_fr: string; department_en?: string; department_fr?: string; url?: string }>("site.institution")]);10  return (11    <>12      <a href="#main" className="skip-link">{d.nav.skip}</a>13      <SiteHeader locale={locale} />14      <main id="main" className="flex-1">{children}</main>15      <SiteFooter locale={locale} attribution={attribution} institution={institution} />16    </>17  );18}19
Files · main
Menu

Theme